{
 "cells": [
  {
   "cell_type": "code",
   "execution_count": 1,
   "metadata": {},
   "outputs": [
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "<frozen importlib._bootstrap>:219: RuntimeWarning: sklearn.tree._splitter.Splitter size changed, may indicate binary incompatibility. Expected 360 from C header, got 1160 from PyObject\n"
     ]
    }
   ],
   "source": [
    "import pandas as pd\n",
    "import matplotlib.pyplot as plt\n",
    "import numpy as np\n",
    "%matplotlib inline\n",
    "plt.rcParams['font.sans-serif'] = ['SimHei']\n",
    "plt.rcParams['axes.unicode_minus'] = False\n",
    "\n",
    "from sklearn.model_selection import train_test_split\n",
    "from sksurv.ensemble import GradientBoostingSurvivalAnalysis\n",
    "from sksurv.datasets import get_x_y "
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 2,
   "metadata": {},
   "outputs": [],
   "source": [
    "# note:训练集随机划分为训练集和验证集（测试集无法用指标验证，后续对比在各指标上的表现）\n",
    "trainDataPath = './data/trainset.xlsx'\n",
    "trainData = pd.read_excel(trainDataPath)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 3,
   "metadata": {},
   "outputs": [],
   "source": [
    "trainData['state'] = trainData['state'].astype(int).astype(bool)\n",
    "trainData['lifetime'] = trainData['lifetime'].astype(int) #.astype(float)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 4,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>novelty</th>\n",
       "      <th>number_of_patents_cited</th>\n",
       "      <th>science_linkage</th>\n",
       "      <th>number_of_IPC4</th>\n",
       "      <th>number_of_IPC8</th>\n",
       "      <th>number_of_claims</th>\n",
       "      <th>number_of_independent_claims</th>\n",
       "      <th>number_of_dependent_claims</th>\n",
       "      <th>number_of_priorities</th>\n",
       "      <th>review_duration</th>\n",
       "      <th>...</th>\n",
       "      <th>number_of_patent_families_inpadoc</th>\n",
       "      <th>number_of_countries_applying</th>\n",
       "      <th>number_of_inventors</th>\n",
       "      <th>number_of_patentees</th>\n",
       "      <th>number_of_inventor_patents</th>\n",
       "      <th>number_of_first_inventor_patents</th>\n",
       "      <th>number_of_patentee_patents</th>\n",
       "      <th>patentee_category</th>\n",
       "      <th>state</th>\n",
       "      <th>lifetime</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>4.050685</td>\n",
       "      <td>-0.138848</td>\n",
       "      <td>-0.166053</td>\n",
       "      <td>-0.840604</td>\n",
       "      <td>-0.589710</td>\n",
       "      <td>0.050517</td>\n",
       "      <td>0.015246</td>\n",
       "      <td>0.050717</td>\n",
       "      <td>-0.31303</td>\n",
       "      <td>4.287328</td>\n",
       "      <td>...</td>\n",
       "      <td>0.016395</td>\n",
       "      <td>-0.129599</td>\n",
       "      <td>-0.574227</td>\n",
       "      <td>-0.950091</td>\n",
       "      <td>-0.452219</td>\n",
       "      <td>-0.396837</td>\n",
       "      <td>-0.590359</td>\n",
       "      <td>0.008336</td>\n",
       "      <td>True</td>\n",
       "      <td>146</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>4.050685</td>\n",
       "      <td>-0.010712</td>\n",
       "      <td>-0.166053</td>\n",
       "      <td>1.899835</td>\n",
       "      <td>1.231297</td>\n",
       "      <td>0.818608</td>\n",
       "      <td>-0.568581</td>\n",
       "      <td>0.985000</td>\n",
       "      <td>-0.31303</td>\n",
       "      <td>6.255681</td>\n",
       "      <td>...</td>\n",
       "      <td>0.058985</td>\n",
       "      <td>0.282930</td>\n",
       "      <td>0.988762</td>\n",
       "      <td>-0.950091</td>\n",
       "      <td>-0.388978</td>\n",
       "      <td>-0.396837</td>\n",
       "      <td>-0.590359</td>\n",
       "      <td>0.008336</td>\n",
       "      <td>True</td>\n",
       "      <td>219</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>-0.383335</td>\n",
       "      <td>-0.222137</td>\n",
       "      <td>-0.144048</td>\n",
       "      <td>-0.840604</td>\n",
       "      <td>-1.044961</td>\n",
       "      <td>-0.168937</td>\n",
       "      <td>-1.152409</td>\n",
       "      <td>0.050717</td>\n",
       "      <td>-0.31303</td>\n",
       "      <td>3.382949</td>\n",
       "      <td>...</td>\n",
       "      <td>-0.068785</td>\n",
       "      <td>-0.281584</td>\n",
       "      <td>-1.095223</td>\n",
       "      <td>-0.950091</td>\n",
       "      <td>-0.473299</td>\n",
       "      <td>-0.396837</td>\n",
       "      <td>-0.589792</td>\n",
       "      <td>-3.538409</td>\n",
       "      <td>True</td>\n",
       "      <td>146</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "<p>3 rows × 21 columns</p>\n",
       "</div>"
      ],
      "text/plain": [
       "    novelty  number_of_patents_cited  science_linkage  number_of_IPC4  \\\n",
       "0  4.050685                -0.138848        -0.166053       -0.840604   \n",
       "1  4.050685                -0.010712        -0.166053        1.899835   \n",
       "2 -0.383335                -0.222137        -0.144048       -0.840604   \n",
       "\n",
       "   number_of_IPC8  number_of_claims  number_of_independent_claims  \\\n",
       "0       -0.589710          0.050517                      0.015246   \n",
       "1        1.231297          0.818608                     -0.568581   \n",
       "2       -1.044961         -0.168937                     -1.152409   \n",
       "\n",
       "   number_of_dependent_claims  number_of_priorities  review_duration  ...  \\\n",
       "0                    0.050717              -0.31303         4.287328  ...   \n",
       "1                    0.985000              -0.31303         6.255681  ...   \n",
       "2                    0.050717              -0.31303         3.382949  ...   \n",
       "\n",
       "   number_of_patent_families_inpadoc  number_of_countries_applying  \\\n",
       "0                           0.016395                     -0.129599   \n",
       "1                           0.058985                      0.282930   \n",
       "2                          -0.068785                     -0.281584   \n",
       "\n",
       "   number_of_inventors  number_of_patentees  number_of_inventor_patents  \\\n",
       "0            -0.574227            -0.950091                   -0.452219   \n",
       "1             0.988762            -0.950091                   -0.388978   \n",
       "2            -1.095223            -0.950091                   -0.473299   \n",
       "\n",
       "   number_of_first_inventor_patents  number_of_patentee_patents  \\\n",
       "0                         -0.396837                   -0.590359   \n",
       "1                         -0.396837                   -0.590359   \n",
       "2                         -0.396837                   -0.589792   \n",
       "\n",
       "   patentee_category  state  lifetime  \n",
       "0           0.008336   True       146  \n",
       "1           0.008336   True       219  \n",
       "2          -3.538409   True       146  \n",
       "\n",
       "[3 rows x 21 columns]"
      ]
     },
     "execution_count": 4,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "trainData[:3]"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 5,
   "metadata": {},
   "outputs": [],
   "source": [
    "feature, label = get_x_y(data_frame = trainData, \n",
    "               attr_labels = ['state', 'lifetime'],\n",
    "               pos_label = True,  #event发生对应的值（专利失效-True）\n",
    "               survival=True)\n",
    "# note：自己定义相同数据类型，无法用于训练模型。只能使用get_x_y()来构造数据集"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 6,
   "metadata": {},
   "outputs": [],
   "source": [
    "xTrain, xValid, yTrain, yValid = train_test_split(feature, label, test_size=0.2, random_state=0)\n",
    "# note:这里Valid在功能上算是测试集。此处名称不再做修改，可全部替换成Test"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 7,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<style>#sk-container-id-1 {color: black;background-color: white;}#sk-container-id-1 pre{padding: 0;}#sk-container-id-1 div.sk-toggleable {background-color: white;}#sk-container-id-1 label.sk-toggleable__label {cursor: pointer;display: block;width: 100%;margin-bottom: 0;padding: 0.3em;box-sizing: border-box;text-align: center;}#sk-container-id-1 label.sk-toggleable__label-arrow:before {content: \"▸\";float: left;margin-right: 0.25em;color: #696969;}#sk-container-id-1 label.sk-toggleable__label-arrow:hover:before {color: black;}#sk-container-id-1 div.sk-estimator:hover label.sk-toggleable__label-arrow:before {color: black;}#sk-container-id-1 div.sk-toggleable__content {max-height: 0;max-width: 0;overflow: hidden;text-align: left;background-color: #f0f8ff;}#sk-container-id-1 div.sk-toggleable__content pre {margin: 0.2em;color: black;border-radius: 0.25em;background-color: #f0f8ff;}#sk-container-id-1 input.sk-toggleable__control:checked~div.sk-toggleable__content {max-height: 200px;max-width: 100%;overflow: auto;}#sk-container-id-1 input.sk-toggleable__control:checked~label.sk-toggleable__label-arrow:before {content: \"▾\";}#sk-container-id-1 div.sk-estimator input.sk-toggleable__control:checked~label.sk-toggleable__label {background-color: #d4ebff;}#sk-container-id-1 div.sk-label input.sk-toggleable__control:checked~label.sk-toggleable__label {background-color: #d4ebff;}#sk-container-id-1 input.sk-hidden--visually {border: 0;clip: rect(1px 1px 1px 1px);clip: rect(1px, 1px, 1px, 1px);height: 1px;margin: -1px;overflow: hidden;padding: 0;position: absolute;width: 1px;}#sk-container-id-1 div.sk-estimator {font-family: monospace;background-color: #f0f8ff;border: 1px dotted black;border-radius: 0.25em;box-sizing: border-box;margin-bottom: 0.5em;}#sk-container-id-1 div.sk-estimator:hover {background-color: #d4ebff;}#sk-container-id-1 div.sk-parallel-item::after {content: \"\";width: 100%;border-bottom: 1px solid gray;flex-grow: 1;}#sk-container-id-1 div.sk-label:hover label.sk-toggleable__label {background-color: #d4ebff;}#sk-container-id-1 div.sk-serial::before {content: \"\";position: absolute;border-left: 1px solid gray;box-sizing: border-box;top: 0;bottom: 0;left: 50%;z-index: 0;}#sk-container-id-1 div.sk-serial {display: flex;flex-direction: column;align-items: center;background-color: white;padding-right: 0.2em;padding-left: 0.2em;position: relative;}#sk-container-id-1 div.sk-item {position: relative;z-index: 1;}#sk-container-id-1 div.sk-parallel {display: flex;align-items: stretch;justify-content: center;background-color: white;position: relative;}#sk-container-id-1 div.sk-item::before, #sk-container-id-1 div.sk-parallel-item::before {content: \"\";position: absolute;border-left: 1px solid gray;box-sizing: border-box;top: 0;bottom: 0;left: 50%;z-index: -1;}#sk-container-id-1 div.sk-parallel-item {display: flex;flex-direction: column;z-index: 1;position: relative;background-color: white;}#sk-container-id-1 div.sk-parallel-item:first-child::after {align-self: flex-end;width: 50%;}#sk-container-id-1 div.sk-parallel-item:last-child::after {align-self: flex-start;width: 50%;}#sk-container-id-1 div.sk-parallel-item:only-child::after {width: 0;}#sk-container-id-1 div.sk-dashed-wrapped {border: 1px dashed gray;margin: 0 0.4em 0.5em 0.4em;box-sizing: border-box;padding-bottom: 0.4em;background-color: white;}#sk-container-id-1 div.sk-label label {font-family: monospace;font-weight: bold;display: inline-block;line-height: 1.2em;}#sk-container-id-1 div.sk-label-container {text-align: center;}#sk-container-id-1 div.sk-container {/* jupyter's `normalize.less` sets `[hidden] { display: none; }` but bootstrap.min.css set `[hidden] { display: none !important; }` so we also need the `!important` here to be able to override the default hidden behavior on the sphinx rendered scikit-learn.org. See: https://github.com/scikit-learn/scikit-learn/issues/21755 */display: inline-block !important;position: relative;}#sk-container-id-1 div.sk-text-repr-fallback {display: none;}</style><div id=\"sk-container-id-1\" class=\"sk-top-container\"><div class=\"sk-text-repr-fallback\"><pre>GradientBoostingSurvivalAnalysis(learning_rate=0.5, max_depth=5,\n",
       "                                 n_estimators=140)</pre><b>In a Jupyter environment, please rerun this cell to show the HTML representation or trust the notebook. <br />On GitHub, the HTML representation is unable to render, please try loading this page with nbviewer.org.</b></div><div class=\"sk-container\" hidden><div class=\"sk-item\"><div class=\"sk-estimator sk-toggleable\"><input class=\"sk-toggleable__control sk-hidden--visually\" id=\"sk-estimator-id-1\" type=\"checkbox\" checked><label for=\"sk-estimator-id-1\" class=\"sk-toggleable__label sk-toggleable__label-arrow\">GradientBoostingSurvivalAnalysis</label><div class=\"sk-toggleable__content\"><pre>GradientBoostingSurvivalAnalysis(learning_rate=0.5, max_depth=5,\n",
       "                                 n_estimators=140)</pre></div></div></div></div></div>"
      ],
      "text/plain": [
       "GradientBoostingSurvivalAnalysis(learning_rate=0.5, max_depth=5,\n",
       "                                 n_estimators=140)"
      ]
     },
     "execution_count": 7,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "# 训练模型-极端梯度提升生存树\n",
    "surv_func = GradientBoostingSurvivalAnalysis(n_estimators=140,  # 树的数量\n",
    "                           loss=\"coxph\",\n",
    "                           learning_rate=0.5,\n",
    "                           max_depth=5)\n",
    "surv_func.fit(xTrain, yTrain)\n",
    "# 训练时间：17min"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 8,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "train score: 0.823416592252492\n",
      "valid score: 0.7269114281901455\n"
     ]
    }
   ],
   "source": [
    "# 模型评估-----------------------------------------------------------\n",
    "# 一致性指数（可以用model.score 也可以用concordance_index_censored）\n",
    "scoreTrain = surv_func.score(xTrain, yTrain)\n",
    "scoreValid = surv_func.score(xValid, yValid)\n",
    "print('train score:',scoreTrain)\n",
    "print('valid score:',scoreValid)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 9,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "train concordance index: 0.8259634006936908\n",
      "valid concordance index: 0.7262231982984098\n",
      "concordance index complete information: (0.7262231982984098, 2214874, 834979, 0, 10097)\n"
     ]
    }
   ],
   "source": [
    "from sksurv.metrics import concordance_index_censored\n",
    "# train\n",
    "trainPre = surv_func.predict(xTrain)\n",
    "concordanceIndexTrain = concordance_index_censored(yTrain['state'],\n",
    "        yTrain['lifetime'], trainPre)\n",
    "print('train concordance index:' ,concordanceIndexTrain[0])\n",
    "# valid\n",
    "validPre = surv_func.predict(xValid)\n",
    "concordanceIndexValid = concordance_index_censored(yValid['state'],\n",
    "        yValid['lifetime'], validPre)\n",
    "print('valid concordance index:' ,concordanceIndexValid[0])\n",
    "\n",
    "print('concordance index complete information:', concordanceIndexValid )"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 10,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "range of time: lower: 28.0  ;upper: 235.0\n",
      "train integrated brier score: 0.12316355310254365\n",
      "train integrated brier score: 0.1672798266579115\n"
     ]
    }
   ],
   "source": [
    "# 综合Brier评分:与时间相关的Brier分数是时间点的均方误差, 综合Brier评分为总体性能\n",
    "from sksurv.metrics import integrated_brier_score\n",
    "lower, upper = np.percentile(label['lifetime'], [10, 95])  #计算分位数\n",
    "print('range of time: lower:',lower,' ;upper:', upper)\n",
    "timesIBS = np.arange(lower, upper + 1)\n",
    "# train\n",
    "predsTrain = np.row_stack([fn(timesIBS) for fn in surv_func.predict_survival_function(xTrain)])\n",
    "trainIBS = integrated_brier_score(label, yTrain, predsTrain, timesIBS)\n",
    "print('train integrated brier score:', trainIBS)\n",
    "# valid \n",
    "predsValid = np.row_stack([fn(timesIBS) for fn in surv_func.predict_survival_function(xValid)])\n",
    "validIBS = integrated_brier_score(label, yValid, predsValid, timesIBS)\n",
    "print('valid integrated brier score:', validIBS)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 11,
   "metadata": {},
   "outputs": [],
   "source": [
    "# 时序Brier评分（通过brier_score的累计绘制时序Brier图）\n",
    "from sksurv.metrics import brier_score\n",
    "# train\n",
    "sequentialBrierScoreTrain = []\n",
    "survsTrain = surv_func.predict_survival_function(xTrain)\n",
    "for time in timesIBS:\n",
    "    timepreds = [fn(time) for fn in survsTrain]\n",
    "    timeBS = brier_score(label, yTrain, timepreds, time)\n",
    "    sequentialBrierScoreTrain.append(timeBS[1])\n",
    "# print(sequentialBrierScoreTrain) \n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 12,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "Text(0, 0.5, 'BS值')"
      ]
     },
     "execution_count": 12,
     "metadata": {},
     "output_type": "execute_result"
    },
    {
     "data": {
      "image/png": "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T48++miHp7+2bt2q22+/XRUVFXrggQe0cOHC8LKf/vSnWrFiherr63XttddqzZo16tOnT4ftQGvcLgIAYDUdhp2MjAwdPXpUr732mn7yk5+ouLhY/fr109ixY1udsgoGgy0uUz8Tr9er6dOna+rUqXrxxRd15513at26dZozZ06b21RUVGjGjBm65557NGvWLN1yyy360pe+pEmTJuntt9/Wr3/9a7399tuy2+266667dM8992jdunWR/QTQQoDbRQAALCai01gul0s333yzbr75Zq1du1aFhYVyuVx6+umnlZyc3Kkn3Lhxo9xut1auXKnExEQtXbpUd9xxR7thZ8OGDRowYIAeeughGYahJUuWaO3atZo0aZLef/99ffWrX9WFF14oSZo1a5aefPLJTrUJpwS4XQQAwGI6fUSbO3eudu7cqTFjxnQ66EjSrl27NHbsWCUmJkqSRo4cqZKSkg63ufrqq8OnusaMGaMPP/xQknTppZfqlVde0ccff6xjx45p7dq1uvbaa9vcl9frlcfjafHAKdTsAACs5qz+fT///PN19913S5L8fr+qq6sj3tbj8SgvLy88bRiG7Ha7qqqqIt4mNTVV5eXlkqTrrrtOw4YNU35+vvr166fa2lrdf//9be5r2bJlSktLCz9yc3Mjbvu5gJodAIDVRBx2qqurdc899+jf//3fw/N+8YtfKC0tTenp6Ro/frwOHjzY4X4cDodcLleLefHx8aqrq4t4m9PXf+mll3TgwAF99NFHqqys1KWXXqp//dd/bXNfixYtktvtDj8OHTrUYZvPJacuPSfsAACsIeKwM3fuXG3fvl033nijJOkPf/iDFi5cqNWrV+vAgQO66KKLNH/+/A73k5mZqYqKihbzqqur5XQ6I97m9PVfeOEFff/739eFF16ozMxMrVq1Sq+88opOnjx5xn25XC6lpqa2eOCUU4MKUrMDALCGiAqUJWnTpk3661//qsGDB0uS7r//fs2fP1+33nqrJOnHP/6xRowY0eF+CgoK9Mwzz4Sn9+/fL6/Xq8zMzHa3eeGFF8LTO3fuVE5OjqTGsX0+++yz8LKjR49KarwyDJ3XXLPDaSwAgFVE/O97//79tXfvXknS2rVrVVpaqgceeCC8/KOPPlJ6enqH+5kwYYLcbrfWr18vSVq+fLkmT54su90uj8cjv9/fapsZM2Zo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",
      "text/plain": [
       "<Figure size 640x480 with 1 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "plt.plot(timesIBS,sequentialBrierScoreTrain)\n",
    "plt.xlabel('专利生存期')\n",
    "plt.ylabel('BS值')"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 13,
   "metadata": {},
   "outputs": [],
   "source": [
    "# valid\n",
    "sequentialBrierScoreValid = []\n",
    "survsValid = surv_func.predict_survival_function(xValid)\n",
    "for time in timesIBS:\n",
    "    timepreds = [fn(time) for fn in survsValid]\n",
    "    timeBS = brier_score(label, yValid, timepreds, time)\n",
    "    sequentialBrierScoreValid.append(timeBS[1])\n",
    "# print(sequentialBrierScoreTrain)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 14,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "Text(0, 0.5, 'BS值')"
      ]
     },
     "execution_count": 14,
     "metadata": {},
     "output_type": "execute_result"
    },
    {
     "data": {
      "image/png": "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",
      "text/plain": [
       "<Figure size 640x480 with 1 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "plt.plot(timesIBS,sequentialBrierScoreValid)\n",
    "plt.xlabel('专利生存期')\n",
    "plt.ylabel('BS值')"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 15,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>importances_mean</th>\n",
       "      <th>importances_std</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>number_of_patentee_patents</th>\n",
       "      <td>0.166524</td>\n",
       "      <td>0.008494</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>number_of_patent_families_inpadoc</th>\n",
       "      <td>0.022608</td>\n",
       "      <td>0.002892</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>number_of_patent_families_dwpi</th>\n",
       "      <td>0.021299</td>\n",
       "      <td>0.003778</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>number_of_priorities</th>\n",
       "      <td>0.020284</td>\n",
       "      <td>0.001806</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>number_of_patentees</th>\n",
       "      <td>0.017098</td>\n",
       "      <td>0.002991</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>number_of_dependent_claims</th>\n",
       "      <td>0.008689</td>\n",
       "      <td>0.002114</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>number_of_inventor_patents</th>\n",
       "      <td>0.008619</td>\n",
       "      <td>0.002309</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>patentee_category</th>\n",
       "      <td>0.007219</td>\n",
       "      <td>0.001335</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>number_of_claims</th>\n",
       "      <td>0.006663</td>\n",
       "      <td>0.001593</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>number_of_first_inventor_patents</th>\n",
       "      <td>0.004715</td>\n",
       "      <td>0.001712</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>number_of_patents_cited</th>\n",
       "      <td>0.004616</td>\n",
       "      <td>0.001300</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>number_of_countries_applying</th>\n",
       "      <td>0.004537</td>\n",
       "      <td>0.001436</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>review_duration</th>\n",
       "      <td>0.003760</td>\n",
       "      <td>0.001844</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>number_of_IPC4</th>\n",
       "      <td>0.002784</td>\n",
       "      <td>0.001281</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>number_of_independent_claims</th>\n",
       "      <td>0.002605</td>\n",
       "      <td>0.001233</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>science_linkage</th>\n",
       "      <td>0.001889</td>\n",
       "      <td>0.000984</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>number_of_IPC8</th>\n",
       "      <td>0.000876</td>\n",
       "      <td>0.001229</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>number_of_inventors</th>\n",
       "      <td>-0.000145</td>\n",
       "      <td>0.000765</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>novelty</th>\n",
       "      <td>-0.001053</td>\n",
       "      <td>0.000735</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "                                   importances_mean  importances_std\n",
       "number_of_patentee_patents                 0.166524         0.008494\n",
       "number_of_patent_families_inpadoc          0.022608         0.002892\n",
       "number_of_patent_families_dwpi             0.021299         0.003778\n",
       "number_of_priorities                       0.020284         0.001806\n",
       "number_of_patentees                        0.017098         0.002991\n",
       "number_of_dependent_claims                 0.008689         0.002114\n",
       "number_of_inventor_patents                 0.008619         0.002309\n",
       "patentee_category                          0.007219         0.001335\n",
       "number_of_claims                           0.006663         0.001593\n",
       "number_of_first_inventor_patents           0.004715         0.001712\n",
       "number_of_patents_cited                    0.004616         0.001300\n",
       "number_of_countries_applying               0.004537         0.001436\n",
       "review_duration                            0.003760         0.001844\n",
       "number_of_IPC4                             0.002784         0.001281\n",
       "number_of_independent_claims               0.002605         0.001233\n",
       "science_linkage                            0.001889         0.000984\n",
       "number_of_IPC8                             0.000876         0.001229\n",
       "number_of_inventors                       -0.000145         0.000765\n",
       "novelty                                   -0.001053         0.000735"
      ]
     },
     "execution_count": 15,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "# 特征重要性--------------------------------------------------------------\n",
    "# 特征评估的置换重要性\n",
    "from sklearn.inspection import permutation_importance\n",
    "\n",
    "result = permutation_importance(\n",
    "    surv_func, xValid, yValid, n_repeats=15, random_state=0\n",
    ")\n",
    "\n",
    "pd.DataFrame(\n",
    "    {k: result[k] for k in (\"importances_mean\", \"importances_std\",)},\n",
    "    index=trainData.columns[:-2]\n",
    ").sort_values(by=\"importances_mean\", ascending=False) "
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 19,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>feature</th>\n",
       "      <th>importance</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>novelty</td>\n",
       "      <td>0.027056</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>number_of_patents_cited</td>\n",
       "      <td>0.053048</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>science_linkage</td>\n",
       "      <td>0.039201</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>number_of_IPC4</td>\n",
       "      <td>0.018103</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4</th>\n",
       "      <td>number_of_IPC8</td>\n",
       "      <td>0.029254</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>5</th>\n",
       "      <td>number_of_claims</td>\n",
       "      <td>0.055423</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>6</th>\n",
       "      <td>number_of_independent_claims</td>\n",
       "      <td>0.038961</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>7</th>\n",
       "      <td>number_of_dependent_claims</td>\n",
       "      <td>0.068169</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>8</th>\n",
       "      <td>number_of_priorities</td>\n",
       "      <td>0.033126</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>9</th>\n",
       "      <td>review_duration</td>\n",
       "      <td>0.095513</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>10</th>\n",
       "      <td>number_of_patent_families_dwpi</td>\n",
       "      <td>0.037019</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>11</th>\n",
       "      <td>number_of_patent_families_inpadoc</td>\n",
       "      <td>0.034232</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>12</th>\n",
       "      <td>number_of_countries_applying</td>\n",
       "      <td>0.038274</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>13</th>\n",
       "      <td>number_of_inventors</td>\n",
       "      <td>0.023179</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>14</th>\n",
       "      <td>number_of_patentees</td>\n",
       "      <td>0.067412</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>15</th>\n",
       "      <td>number_of_inventor_patents</td>\n",
       "      <td>0.042467</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>16</th>\n",
       "      <td>number_of_first_inventor_patents</td>\n",
       "      <td>0.028750</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>17</th>\n",
       "      <td>number_of_patentee_patents</td>\n",
       "      <td>0.252371</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>18</th>\n",
       "      <td>patentee_category</td>\n",
       "      <td>0.018443</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "                              feature  importance\n",
       "0                             novelty    0.027056\n",
       "1             number_of_patents_cited    0.053048\n",
       "2                     science_linkage    0.039201\n",
       "3                      number_of_IPC4    0.018103\n",
       "4                      number_of_IPC8    0.029254\n",
       "5                    number_of_claims    0.055423\n",
       "6        number_of_independent_claims    0.038961\n",
       "7          number_of_dependent_claims    0.068169\n",
       "8                number_of_priorities    0.033126\n",
       "9                     review_duration    0.095513\n",
       "10     number_of_patent_families_dwpi    0.037019\n",
       "11  number_of_patent_families_inpadoc    0.034232\n",
       "12       number_of_countries_applying    0.038274\n",
       "13                number_of_inventors    0.023179\n",
       "14                number_of_patentees    0.067412\n",
       "15         number_of_inventor_patents    0.042467\n",
       "16   number_of_first_inventor_patents    0.028750\n",
       "17         number_of_patentee_patents    0.252371\n",
       "18                  patentee_category    0.018443"
      ]
     },
     "execution_count": 19,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "# GBSA自带特征重要性\n",
    "featuresCol = trainData.columns[:-2]\n",
    "surv_import = surv_func.feature_importances_\n",
    "importanceGBSA = pd.DataFrame(columns=['feature','importance'])\n",
    "importanceGBSA['feature'] = featuresCol\n",
    "importanceGBSA['importance'] = surv_import\n",
    "importanceGBSA"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 20,
   "metadata": {},
   "outputs": [],
   "source": [
    "# 样本预测-----------------------------------------------------------------\n",
    "# 样本风险评分预测\n",
    "samplePatents = xValid[:5]"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 21,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "array([(False, 29.), (False, 28.), (False, 88.), (False, 90.),\n",
       "       (False, 90.)], dtype=[('state', '?'), ('lifetime', '<f8')])"
      ]
     },
     "execution_count": 21,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "yValid[:5]\n",
    "# 测试集样本实例的实际情况"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 22,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "0   -0.414689\n",
       "1   -0.335393\n",
       "2    0.505715\n",
       "3   -1.188737\n",
       "4   -0.546886\n",
       "dtype: float64"
      ]
     },
     "execution_count": 22,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "sampleRiskScore = pd.Series(surv_func.predict(samplePatents))\n",
    "sampleRiskScore"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 23,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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",
      "text/plain": [
       "<Figure size 640x480 with 1 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "# 生存函数\n",
    "sampleSurv = surv_func.predict_survival_function(samplePatents, return_array=True)\n",
    "\n",
    "for i, s in enumerate(sampleSurv):\n",
    "    plt.step(surv_func.event_times_, s, where=\"post\", label=str(i))\n",
    "plt.ylabel(\"Survival probability\")\n",
    "plt.xlabel(\"Time in months\")\n",
    "plt.legend()\n",
    "plt.grid(True)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 24,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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6NRTT9WRI0daPV6XLl0k1Q+hde3atdkwWkvPS0tLk8/nU3V1tXr27KnXX39dXD0FSA56XAAoMzMz4u8HDx7U0aNH1a1bN+Xl5enaa6/V0aNHdfz48Q4d78wzz9Qpp5wiqX5uTqx1NqxRkg4cOKCCgoLw7T59+igjI0MHDhzo0PFaep7f79crr7yihQsXqkePHpowYYJ2794d9X4BtB/BBUCL+vbtq29/+9vavHmzNm/erC1btmjTpk3y+Xwd2m+8J+z269evUXA4ePCgqqur1a9fv6iO5/F4IvaYtPS8Y8eOqVu3blq/fr0+//xz9ezZs9EQE4DEIbgAaNEVV1yhffv26f3331daWpqWLFmiCRMmOG5Y5Prrr9df//pXPffcc9qzZ49mzZqlSZMmhXtL2jJo0CAtX75chw8f1qpVq9rcvqSkRJdccomWL1+u8vJyeTweBYPBjr4MAFEguABoUV5enl5//XX94he/0ODBg/Xqq6/q9ddfl9frrOlxffv21VtvvaVf//rXGj58uLp06aLnn38+6ucvWLBAy5cv18CBAzV37tw2tz/jjDP0i1/8QrNmzVJBQYF27typxx57rCMvAUCUDMtp/3UCAABoAT0uAADANQguAADANQguAADANQguAADANQguAADANQguAADANQguAADANQguAADANQguAADANQguAADANf4/qtiFuzI4gPIAAAAASUVORK5CYII=",
      "text/plain": [
       "<Figure size 640x480 with 1 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "# 风险函数\n",
    "sampleHazard = surv_func.predict_cumulative_hazard_function(samplePatents, return_array=True)\n",
    "\n",
    "for i, s in enumerate(sampleHazard):\n",
    "    plt.step(surv_func.event_times_, s, where=\"post\", label=str(i))\n",
    "plt.ylabel(\"Cumulative hazard\")\n",
    "plt.xlabel(\"Time in months\")\n",
    "plt.legend()\n",
    "plt.grid(True)"
   ]
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "Python 3",
   "language": "python",
   "name": "python3"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 3
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython3",
   "version": "3.6.8 (tags/v3.6.8:3c6b436a57, Dec 24 2018, 00:16:47) [MSC v.1916 64 bit (AMD64)]"
  },
  "orig_nbformat": 4,
  "vscode": {
   "interpreter": {
    "hash": "d207591e6ff77a7c5fb4cef0dd9fd3703274637a9d0902d2045beb3a65bf572a"
   }
  }
 },
 "nbformat": 4,
 "nbformat_minor": 2
}
